package com.mycompany.delivery.dao.hibernate;

import java.util.List;

import com.mycompany.delivery.dao.TipoEmpleadoDao;
import com.mycompany.delivery.model.TipoEmpleado;

import org.hibernate.Hibernate;
import org.hibernate.SessionFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.stereotype.Repository;

@Repository
@SuppressWarnings(value = "unchecked")
public class TipoEmpleadoDaoHibernate extends HibernateDaoSupport implements
        TipoEmpleadoDao {

    @Autowired
    public TipoEmpleadoDaoHibernate(SessionFactory sessionFactory) {
        setSessionFactory(sessionFactory);
    }

    @Override
    public void guardarTipoEmpleado(TipoEmpleado tipoempleado) {
        getHibernateTemplate().save(tipoempleado);
    }

    @Override
    public void actualizarTipoEmpleado(TipoEmpleado tipoempleado) {
        getHibernateTemplate().update(tipoempleado);
    }

    @Override
    public void eliminarTipoEmpleado(Integer idtipoEmpleado) {
        TipoEmpleado tipoempleado = obtenerTipoEmpleadoById(idtipoEmpleado);
        getHibernateTemplate().delete(tipoempleado);

    }

    @Override
    public List<TipoEmpleado> obtenerListaTipoEmpleado(TipoEmpleado tipoempleado) {
        StringBuilder query = new StringBuilder("from tipo_empleado e ");

        if (tipoempleado.getNombre() != null
                && !tipoempleado.getNombre().isEmpty()) {
            query.append(" where NOMBRE like '%").append(tipoempleado.getNombre()).append("%'");
        }

        List<TipoEmpleado> list = getHibernateTemplate().find(query.toString());
        return list;
    }

    @Override
    public TipoEmpleado obtenerTipoEmpleadoById(Integer idTipoEmpleado) {
        TipoEmpleado tipoempleado = getHibernateTemplate().get(TipoEmpleado.class, idTipoEmpleado);
        return tipoempleado;
    }
}
